Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] StateThreadException
Forum - C# / VB.NET - [VB.NET] StateThreadException

Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 11:32
Giovedì, 21/06/2012
Ciao ragazzi..
VI chiedo aiuto perché mi trovo davanti a una exception che non riesco a gestire/capire.
Ho una mini applicazione winform, che pesca i dati da un db access, li elabora, crea un report con questa la libreria Migradoc http://www.pdfsharp.net/MigraDocOverview.ashx, mostra l'anteprima del report nel controllo "documentPreview" della libreria.
Ora, quello che volevo fare era esportare il report, usando i metodi della libreria, in formato pdf o rtf. Quello funziona.
Il mio problema è che vorrei aggiungere un controllo savefiledialog, per fare tipo "salva con nome...".
Inserisco nel form il controllo, quando eseguo il metodo showdialog VS10 mi genera questa eccezione:
Codice sorgente - presumibilmente C# / VB.NET

  1. Prima di effettuare chiamate OLE, occorre impostare il thread corrente sulla modalità Single Thread Apartment (STA). Assicurarsi che la funzione Main sia contrassegnata con STAThreadAttribute. Eccezione generata solo se un debugger è associato al processo.


A cosa può essere imputabile? Io non ho funzioni main nel mio progetto, faccio partire direttamente l'unico form che ho, con l'evento load..
Ho 2 sub new, che userò per collegare questo pezzo di programma a un progetto più ampio, ma non credo sia quello..
Che devo fare secondo voi?
Grazie!8-|

EDIT: ho letto in giro che è il problema è il componente COM esterno che mi fa la preview del report..
Detto ciò, secondo voi come posso risolvere?

Ultima modifica effettuata da Renny il 21/06/2012 alle 21:41
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 11:53
Venerdì, 22/06/2012
Ragazzi, c'è nessuno che ha idea di come superare questo ostacolo?
Sono abbastanza disperato.. Anche perché nello stesso progetto uso anche un'altra dialog, una PrinterSettings per predisporre la stampa del report.

E allora perché con la savefiledialog mi da questa exception?
Cercando in giro ho trovato questo codice:
Codice sorgente - presumibilmente VB.NET

  1. 'This is the thread that does all the work
  2. Dim oThread As Threading.Thread
  3.  
  4. 'Kill any previously running thread...
  5. If Not Me.oThread Is Nothing Then
  6.      Me.oThread.Abort()
  7.      Me.oThread = Nothing
  8. End If
  9.  
  10. ‘Define new instance of our thread
  11. Me.oThread = New Threading.Thread(AddressOf Me.RunEncoder)
  12.  
  13. 'Change the ApartmentState to STA (Single Thread Apartment)
  14. oThread.SetApartmentState(Threading.ApartmentState.STA)
  15.  
  16. 'Start the thread...
  17. oThread.Start()


Fonte: http://forums.asp.net/t/1128111.aspx/1
Ma come va utilizzato? :-o Dove va messo?:-o

PM Quote